//封装格式化时间函数
/*
        封装一个传入时间字符串或者时间戳，可以返回想要的日期的格式的方法
        "2022-10-22"  "YYYY/MM/DD  hh:mm:ss" Y表示年，M表示月，D表示号，h时间，m分，s秒
        f("2022-10-22"，"YYYY/MM/DD hh:mm:ss") => 2022/10/22 00:00:00
        f("2022-10-22"，"MM/DD hh:mm:ss") => 10/22 00:00:00
        */
/**
 * @dateStr string 时间字符串或者时间戳（number）
 * @format string 日期期望格式
 * @return string 日期格式
 */

 export function dataFormat(dateStr, format) {
  //判断dateStr是否有值，如果有值则以传入时间进行实例化，如果没有则实例化当前时间
  var date = dateStr ? new Date(dateStr) : new Date();

  var year = date.getFullYear();
  var month = date.getMonth();
  var d = date.getDate();
  var hh = date.getHours();
  var minutes = date.getMinutes();
  var seconds = date.getSeconds();
  //不足两位前一位补0,不包含年份 （函数方法）
  function buNumber(num) {
    //把number转为string，方便利用string.length判断位数
    //如果小于两位则补0
    if (String(num).length < 2) {
      //返回一个拼接0的新字符串 string
      return "0" + String(num);
    } else {
      //两位，不用做任何操作 number
      return num;
    }
  }
  //为了能给对应f("2022-10-22"，"YYYY/MM/DD hh:mm:ss") => 2022/10/22 00:00:00
  //需要用对象的key：value实现对应关系
  var duiying = {
    YYYY: buNumber(year),
    MM: buNumber(month + 1),
    DD: buNumber(d),
    hh: buNumber(hh),
    mm: buNumber(minutes),
    ss: buNumber(seconds),
    //将number转为string然后截取
    YY: String(year).slice(2),
  };
  // console.log(typeof duiying.YY)
  //利用链操作，首先把duiying里的key存在一个数组中，然后通过forEach（）遍历数组
  //把key和format里面的字符串对比，然后将相同的替换为value，
  //这个操作之后format就是一个想要的时间格式，然后return出去
  Object.keys(duiying).forEach(function (key) {
    format = format.replace(key, duiying[key]);
  });
  return format;
}
var dt = dataFormat(1670745905000, "YYYY/MM/DD hh:mm:ss");
var dt2 = dataFormat(1670745905000, "YY/MM/DD hh:mm:ss");
var dt1 = dataFormat(1670745905000, "MM/DD hh:mm:ss");
